package com.zhouhong.LeetCode;

import java.util.Arrays;

//给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
// 示例 1:
// 输入: s = "anagram", t = "nagaram"
//输出: true
// 示例 2:
// 输入: s = "rat", t = "car"
//输出: false
// 说明:
//你可以假设字符串只包含小写字母。
// 进阶:
//如果输入字符串包含 unicode 字符怎么办？你能否调整你的解法来应对这种情况？
// Related Topics 排序 哈希表

public class LeetCode0242 {

    /**
     * 傻瓜式方式实现,先排序，在比较两个字符串数组是否相等即可。
     * @param s
     * @param t
     * @return
     */
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()){
            return false;
        }
        char[] s1 = s.toCharArray();
        char[] t1 = t.toCharArray();
        Arrays.sort(s1);
        Arrays.sort(t1);

        return Arrays.equals(s1, t1);
    }

    public boolean isAnagram2(String s, String t) {
        int[] arr = new int[26];
        for (int i = 0; i < s.length(); i++) {
            arr[s.charAt(i) - 'a'] ++;
        }
        for (int i = 0; i < t.length(); i++) {
            arr[t.charAt(i) - 'a'] --;
        }
        for (int a:arr) {
            if (a != 0){
                return false;
            }
        }
        return true;
    }
}
